package quoridor;

public interface GUI {
	/**
	 * initialSetup prompts out the menus and requests for user input.
	 *
	 * @return int parameters mainMenuOption and gameMode
	 */
	public int [] initialSetup();
    
    /**
     * Requests the user to input a desired action, interpreting then returning
     * the action received.  Will continue to prompt the user until a recognised
     * action is given.
     *
     * @param colour the colour
     * @return Action given by user
     */
    public Action getAction(PlayerColour colour);
    
    /**
     * Prints the state of the board given as a parameter.
     *
     * @param board the board
     */
    public void printBoard(Board board);
    
    
    /**
     * Prints an exit game message.
     */
    public void exitGameMessage();
    
    
	 /**
 	 * Informs display that the last action it obtained held an invalid move,
 	 * and that it should ask the user for another.
 	 */
 	public void invalidMove();
    
    /**
     * Prints the final boardstate and a message stating that the given player
     * has won.
     *
     * @param gameBoard the game board
     * @param playerColour the player colour of the winner.
     */
    public void printVictory(Board gameBoard, PlayerColour playerColour);
}
